#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <stdint.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdbool.h>
#include <errno.h>
#include <string.h>
#include <signal.h>
#include <dlfcn.h>
#include <pthread.h>
#include <linux/fb.h>


int main(int argc, char const *argv[])
{
    int fd[2];
    pipe(fd);

    if(fork() == 0)
    {
        // 标准输出的重定向
        // cp  file1  file2
        dup2(fd[1], STDOUT_FILENO);

        // 执行ps
        // close(fd[0]);
        execlp("ps", "ps", "ajx", NULL); // ps --> STDOUT_FILENO --> fd[1]
    }

    if(fork() == 0)
    {
        // 标准输入的重定向
        dup2(fd[0], STDIN_FILENO);

        // 执行grep
        close(fd[1]); // 为了防止自己成为管道的写者，必须关闭
        execlp("grep", "grep", "bash", NULL); // grep <-- STDIN_FILENO <-- fd[0]
    }

    return 0;
}
